/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ik.pbs.Manejadores;

import com.ik.pbs.Encapsulados.Anuncios;
import com.ik.pbs.Encapsulados.FotosAnuncios;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import javax.swing.JOptionPane;

/**
 *
 * @author alexis
 */
public class ManejadorFotosAnuncios extends Manejador {

    public static ManejadorFotosAnuncios manager = null;
    private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-DD");
    private SimpleDateFormat shf = new SimpleDateFormat("HH:mm:ss");

    public static ManejadorFotosAnuncios getInstance() {
        if (manager == null) {
            manager = new ManejadorFotosAnuncios();
        }

        return manager;
    }

    public void ManejadorFotosAnuncios() {
    }

    public ArrayList<FotosAnuncios> getFotosAnuncios(Connection con,int anuncio) {
        ArrayList<FotosAnuncios> arregloFotosAnuncios = new ArrayList();

        ResultSet rd = null;
        PreparedStatement state;

        String query = "select * from fotosanuncios where idAnuncio = ? order by idFoto";

        try {
            Anuncios anun = ManejadorAnuncios.getInstance().getAnuncio(con,anuncio); 
            state = con.prepareCall(query);
            state.setInt(1, anuncio);
            rd = state.executeQuery();

            while (rd.next()) {
                FotosAnuncios FotosAnuncios = new FotosAnuncios();
                FotosAnuncios.setId(rd.getInt("idFoto"));
                FotosAnuncios.setAnuncio(anun);
                FotosAnuncios.setUrl(rd.getString("url"));

                arregloFotosAnuncios.add(FotosAnuncios);
            }

        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }

        return arregloFotosAnuncios;
    }

    public FotosAnuncios getFotoAnuncio(Connection con) {
        FotosAnuncios FotosAnuncios = new FotosAnuncios();

        ResultSet rd = null;
        PreparedStatement state;

        String query = "select * from fotosanuncios";

        try {
            state = con.prepareCall(query);
            rd = state.executeQuery();

            while (rd.next()) {

                FotosAnuncios.setId(rd.getInt("idFoto"));
                FotosAnuncios.setAnuncio(ManejadorAnuncios.getInstance().getAnuncio(con,rd.getInt("idAnuncio")));
                FotosAnuncios.setUrl(rd.getString("url"));
            }

        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }

        return FotosAnuncios;
    }
    
    public FotosAnuncios getFotoAnuncio(Connection con, int anuncio, String url) {
        FotosAnuncios FotosAnuncios = new FotosAnuncios();

        ResultSet rd = null;
        PreparedStatement state;

        String query = "select * from fotosanuncios where idAnuncio = ? and url like ?";

        try {
            state = con.prepareCall(query);
            state.setInt(1, anuncio);
            state.setString(2, "%"+url);
            rd = state.executeQuery();

            while (rd.next()) {

                FotosAnuncios.setId(rd.getInt("idFoto"));
                FotosAnuncios.setAnuncio(ManejadorAnuncios.getInstance().getAnuncio(con,rd.getInt("idAnuncio")));
                FotosAnuncios.setUrl(rd.getString("url"));
            }

        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }

        return FotosAnuncios;
    }

    public boolean insertarFotoAnuncio(Connection con, FotosAnuncios FotosAnuncios) {
        PreparedStatement state;

        String query = "insert into fotosanuncios values(?,?,?)";
        try {


            state = con.prepareStatement(query);
            state.setInt(1, FotosAnuncios.getAnuncio().getId());
            state.setString(3, FotosAnuncios.getUrl());
            state.setInt(2, FotosAnuncios.getId());

            state.execute();
            return true;
        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
            return actualizarFotosAnuncios(con, FotosAnuncios);
        }


    }

    public boolean actualizarFotosAnuncios(Connection con, FotosAnuncios FotosAnuncios) {
        PreparedStatement state;

        String query = "update FotosAnuncios set url = ? where idFoto = ? and idAnuncio = ?";

        try {
            state = con.prepareStatement(query);
            state.setInt(3, FotosAnuncios.getAnuncio().getId());
            state.setString(1, FotosAnuncios.getUrl());
            state.setInt(2, FotosAnuncios.getId());

            state.execute();
            return true;

        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
            return false;
        }


    }

    public int getNext(Connection con,int id) {
        try {
            ResultSet rd = null;
            PreparedStatement state;
            String query = "select max(idFoto) as max from fotosanuncios where idAnuncio = ?";

            state = con.prepareStatement(query);
            state.setInt(1, id);
            rd = state.executeQuery();

            if (!rd.next()) {
                return 1;
            } else {
                return (rd.getInt("max") + 1);
            }
        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }
        return 0;
    }
}